<!doctype html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  
  <meta name="generator" content="Hugo 0.98.0" />

  
  <meta name="description" content="走在通往幸福的路上">
  

  
  <link rel="apple-touch-icon" sizes="180x180" href="https://blog.v5u.win/apple-touch-icon.png">

  
  <link rel="icon" type="image/png" sizes="32x32" href="https://blog.v5u.win/favicon-32x32.png">

  
  <link rel="icon" type="image/png" sizes="16x16" href="https://blog.v5u.win/favicon-16x16.png">

  
  <link rel="manifest" href="https://blog.v5u.win/site.webmanifest">

  
  <link rel="mask-icon" href="https://blog.v5u.win/safari-pinned-tab.svg" color="">

  <meta name="msapplication-TileColor" content="">

  <meta name="theme-color" content="">

  
  <link rel="stylesheet" href="https://blog.v5u.win/css/bootstrap.min.css" />

  
  <title>code review | 为吾优</title>
  

  <style>
body {
  min-width: 300px;
}

.custom-navbar {
  margin-bottom: 1em;
  height: 60px;
}

.custom-navbar a {
  display: inline-block; 
  padding: 18px 0;
  margin-right: 1em; 
  font-weight: bold; 
}

.custom-navbar a:hover,
.custom-navbar a:focus {
  text-decoration: none; 
}

@media print {
  .custom-navbar {
    display: none;
  }
}

article {
  padding-bottom: 1em;
}

img {
  max-width: 100%;
}


body {
  background-color: #fff;
}



body {
  color: #212529;
}



a {
  color: #007bff;
}



a:hover,
a:focus {
  color: #0056b3;
}



.custom-navbar {
  background-color: #212529;
}



.custom-navbar a {
  color: rgba(255,255,255,.75);
}



.custom-navbar a:hover,
.custom-navbar a:focus {
  color: rgba(255,255,255,1);
}



.container {
  max-width: 800px;
}





</style>
</head>

<body>
  <nav class="custom-navbar">
  <div class="container">
    
    <a href="/">文章</a>
    
    <a href="/tags/">标签</a>
    
    <a href="/about/">关于</a>
    
    <a href="/index.xml">RSS</a>
    
  </div>
</nav>
  
  <div class="container">
    <article>
      <h1>code review</h1>
<p><strong>Code Review的好处我觉得不用多说了，主要是让你的代码可以更好的组织起来，有更易读，有更高的维护性，同时可以达到知识共享，找到bug只是其中的副产品</strong>。</p>
<p>**我个人认为代码有这几种级别：**1）可编译，2）可运行，3）可测试，4）可读，5）可维护，6）可重用。通过自动化测试的代码只能达到第3）级，而通过Code Review的代码少会在第4）级甚至更高。</p>
<p>在Amazon，开发工程师都会被教育拿到需求后一定要问——“为什么要做？业务影响度有多大？有多少用户受益？”，</p>
<h4 id="review实施思路">review实施思路</h4>
<p>先Review设计实现思路，然后Review设计模式，接着Review成形的骨干代码，最后Review完成的代码，如果程序复杂的话，需要拆成几个单元或模块分别Review。当然，最佳的practice是，每次Review的代码应该在1000行以内，时间不能超过一部电影的时间——1.5小时（因为据说那个一个正常人的膀胱可以容纳尿液的最长限度）</p>
<h4 id="1--经常进行code-review">1.- 经常进行Code Review</h4>
<h4 id="2--code-review不要太正式而且要短">2.- Code Review不要太正式，而且要短</h4>
<h4 id="3--尽可能的让不同的人reivew你的代码">3.- 尽可能的让不同的人Reivew你的代码</h4>
<h4 id="4--保持积极的正面的态度">4.- 保持积极的正面的态度</h4>
<p>5.- 学会享受Code Reivew</p>
<p><a href="https://coolshell.cn/articles/1302.html">https://coolshell.cn/articles/1302.html</a></p>
<p>review工具</p>
<p><strong>1. Review board:</strong></p>
<p><strong>Codestriker:</strong></p>
<p><strong>Groogle:</strong>：</p>
<ul>
<li>各式各样语言的语法高亮。</li>
<li>支持整个版本树的比较。</li>
<li>支持当个文件不同版本的diff功能，并有一个图形的版本树。</li>
<li>邮件通知所有的Reivew的人当前的状态。</li>
<li>认证机制。</li>
</ul>
<p><strong>4. Rietveld:</strong></p>
<p><a href="http://www.review-board.org/">Review board</a> 很像。它也是一个基于Web的应用，并在<a href="http://code.google.com/appengine/">Google App Engine</a> 上。</p>
<p><strong>5. JCR</strong></p>
<p>基于WEB界面的最初设计给Reivew Java 语言的</p>
<p><a href="http://jcodereview.sourceforge.net/">JCR</a> 主要想协助：</p>
<ul>
<li><strong>审查者</strong>。所有的代码更改都会被高亮，以及大多数语言的语法高亮。Code extracts 可以显示代码评审意见。如果你正在Review Java的代码，你可以点击代码中的类名来查看相关的类的声明。</li>
<li><strong>项目所有者</strong>。可以 轻松创建并配置需要Review的项目，并不需要集成任何的软件配置管理系统（SCM）。</li>
<li><strong>流程信仰者</strong>。 所有的评语都会被记录在数据库中，并且会有状态报告，以及各种各样的统计。</li>
<li><strong>架构师和开发者</strong>。 这个系统也可以让我们查看属于单个文件的评语，这样有利于我们重构代码。</li>
</ul>
<p><a href="http://jcodereview.sourceforge.net/">JCR</a> 主要面对的是大型的项目，或是非常正式的代码评审，从这方面看来，他并不像上面的那些工具。</p>
<p><strong>Jupiter</strong></p>
<p>它是一个Eclipse IDE 的插件。</p>
<p>Gerrit</p>
<p>使用 <a href="https://www.oschina.net/p/git">Git</a> 作为底层版本控制系统。它分支自<a href="http://www.oschina.net/p/rietveld">Rietveld</a>，作者为Google公司的Shawn Pearce，原先是为了管理Android计划而产生。</p>
<p>Gerrit实际上一个Git服务器，它为在其服务器上托管的Git仓库提供一系列权限控制，以及一个用来做Code Review是Web前台页面。当然，其主要功能就是用来做Code Review。</p>

    </article>
  </div>

  
  
  

  
</body>

</html>